package com.jerem.gwt.bredgolf.server;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.jerem.gwt.bredgolf.client.Joueur;
import com.jerem.gwt.bredgolf.client.JoueurService;

public class JoueurImpl extends RemoteServiceServlet implements JoueurService {

	private static final Logger LOG = Logger.getLogger(JoueurImpl.class.getName());
	private static final PersistenceManagerFactory PMFInstance = PMF.get();
	
	private PersistenceManager getPersistenceManager() {
	    return PMFInstance.getPersistenceManager();
	}

	@Override
	public void createJoueur(Joueur joueur) {
		PersistenceManager pm = getPersistenceManager();
	    try {
	      JoueurDTO joueurDTO = new JoueurDTO(joueur.getNom(), 
	    		  							  joueur.getPrenom(), 
	    		  							  joueur.getEmail(), 
	    		  							  joueur.getIndexAmical(),
	    		  							  joueur.getIndexCompet());
	      pm.makePersistent(joueurDTO);
	    } finally {
	      pm.close();
	    }
	}

	@Override
	public void deleteJoueur(Joueur joueur) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List<Joueur> getListeJoueurs() {
		
		List<Joueur> results = new ArrayList<Joueur>();
		PersistenceManager pm = getPersistenceManager();
	    try {
	      Query q = pm.newQuery(JoueurDTO.class);
	      List<JoueurDTO> listeJoueursDTO = (List<JoueurDTO>) q.execute();
	      System.out.println("listeJoueursDTO size : " + listeJoueursDTO.size());
	      for (JoueurDTO joueurDTO : listeJoueursDTO) {
	    	  Joueur unJoueur = new Joueur();
	    	  unJoueur.setId(joueurDTO.getId().getId());
	    	  unJoueur.setNom(joueurDTO.getNom());
	    	  unJoueur.setPrenom(joueurDTO.getPrenom());
	    	  unJoueur.setEmail(joueurDTO.getEmail());
	    	  unJoueur.setIndexAmical(joueurDTO.getIndexAmical());
	    	  unJoueur.setIndexCompet(joueurDTO.getIndexCompet());
	    	  results.add(unJoueur);
	      }
	    } finally {
	      pm.close();
	    }
	    return results;
	}

}
